package cn.cloudreal.cbms.castDetail.dao;

import java.util.List;
import java.util.Map;

import cn.cloudreal.cbms.vo.Charge;
import cn.cloudreal.cbms.vo.Dictionary;
import cn.cloudreal.cbms.vo.FundBudget;
import cn.cloudreal.cbms.vo.LevelRule;
import cn.cloudreal.cbms.vo.MediaPrice;
import cn.cloudreal.cbms.vo.ProjectMedium;
import cn.cloudreal.cbms.vo.SourcePlanYear;

public interface ChargeDao
{
    LevelRule getUnPromotionUsedRatio(Map condition);
    
    /**
     * 根据年度地市和费用类型、费用子类取得预算值
     * @param condition
     * @return
     */
    FundBudget getMediaSummarieByYd(Map condition);
    
    /**
     * 根据媒体价格id查找费用类型
     * @param condition
     * @return
     */
    List<Dictionary> getCostTypeByProMedID(Map condition);
    
    /**
     * 根据媒体价格id和费用类型查找费用子类
     * @param condition
     * @return
     */
    List<Dictionary> getSubCostTypeByProMedIDCostType(Map condition);
    
    /**
     * 保存项目媒介费用
     * @param condition
     * @return
     */
    void saveProjectMedioPrice(Charge charge);
    
    /**
     * 根据项目媒介、费用类型、费用子类取得预算
     * @param condition
     * @return
     */
    SourcePlanYear getMediaSummariePcc(Map condition);
    
    /**
     * 更新媒体价格表费用总额
     * @param condition
     * @return
     */
    void updateMedioTotalPay(Map param);
    
    /**
     * 更新媒体预算剩余额
     * @param condition
     * @return
     */
    void updateMedioAmountUsed(Map param);
    
    /**
     * 更新公共预算剩余额
     * @param condition
     * @return
     */
    void updateGGAmountUsed(Map param);
    
    public ProjectMedium getProjectMediumByProMedID(int proMedID);
    
    /**
     * 根据项目媒介id取得项目费用信息
     * @param condition
     * @return
     */
    public List<Charge> getChargesByProMedID(Integer proMedID);
    
    /**
     * 删除费用信息时，还原预算
     * @param condition
     * @return
     */
    void updateMedioAmountUsedByProMedID(Map param);
    
    /**
     * 删除费用信息时，还原公共预算剩余额
     * @param condition
     * @return
     */
    void updateGGAmountUsedByProMedID(Map param);
    
    /**
     * 费用删除时，还原媒体价格表费用总额
     * @param condition
     * @return
     */
    void updateMedioTotalPayByProMedID(Map param);
    
    /**
     * 根据项目媒介id删除项目媒介费用信息
     * @param condition
     * @return
     */
    void delChargesbyProMedID(Integer proMedID);
    
    /**
     * 根据项目媒介id取得项目价格信息
     * @param condition
     * @return
     */
    public MediaPrice getMediaPriceByProMedID(Integer proMedID);
}
